package com.starry.module.system.core.member.mapper;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.db.core.mapper.BaseMapperX;
import com.starry.db.core.query.LambdaQueryWrapperX;
import com.starry.module.system.api.member.domain.qo.MemberUserPageQo;
import com.starry.module.system.core.member.entity.MemberUser;
import org.apache.ibatis.annotations.Mapper;

/**
 * 会员用户-数据库服务层
 *
 * @author xiaoke
 */
@Mapper
public interface MemberUserMapper extends BaseMapperX<MemberUser> {

    /**
     * 分页查询
     *
     * @param pageQo 分页参数
     * @return PageVo<MemberUser>
     */
    default PageVo<MemberUser> selectPage(MemberUserPageQo pageQo) {
        return selectPage(pageQo, new LambdaQueryWrapperX<MemberUser>()
        );
    }


    /**
     * 获取会员信息（用户名、手机号、邮箱）
     *
     * @param value value
     * @return 用户信息
     */
    default MemberUser selectByValue(String value) {
        return selectOne(new LambdaQueryWrapperX<MemberUser>()
                .or(o -> o.eq(MemberUser::getUsername, value))
                .or(o -> o.eq(MemberUser::getPhone, value))
                .or(o -> o.eq(MemberUser::getEmail, value))
        );
    }
}

